package vip.xiaozhao.intern.baseUtil.intf.service;

import vip.xiaozhao.intern.baseUtil.intf.entity.VV;

import java.util.List;

/**
 * 大V服务接口
 */
public interface VVService {
    
    /**
     * 根据公司、部门、职位获取大V列表
     * 
     * @param companyId 公司ID
     * @param departmentId 部门ID（0表示不限）
     * @param positionId 职位ID
     * @return 大V列表
     */
    List<VV> getVVList(Integer companyId, Integer departmentId, Integer positionId);
    
    /**
     * 更新所有大V的周回答率
     * 用于定时任务调用
     * 
     * @return 更新成功的记录数
     */
    int updateWeekAnswerStats();
    
    /**
     * 从Redis缓存中获取同公司同职位的大V列表
     * 
     * @param companyId 公司ID
     * @param positionId 职位ID 
     * @param excludeIds 排除的ID列表
     * @param limit 获取数量
     * @return 大V列表
     */
    List<VV> getVVsByCompanyPositionFromCache(Integer companyId, Integer positionId, List<Integer> excludeIds, Integer limit);
    
    /**
     * 从Redis缓存中获取同职位的大V列表
     * 
     * @param positionId 职位ID
     * @param excludeIds 排除的ID列表
     * @param limit 获取数量
     * @return 大V列表
     */
    List<VV> getVVsByPositionFromCache(Integer positionId, List<Integer> excludeIds, Integer limit);
    
    /**
     * 更新Redis缓存中的大V数据
     * 用于定时任务调用
     * 
     * @return 是否更新成功
     */
    boolean updateVVCache();
} 